/*
 * MessageHandling.h
 *
 *  Created on: Mar 4, 2011
 *      Author: stud
 */

#ifndef MESSAGEHANDLING_H_
#define MESSAGEHANDLING_H_

#include "MsgWrapper.h"

class MessageHandling {
public:
    template<typename Msg>
    static ssize_t sendMsg(int msgQId, const Msg& data)
    {
        MsgWrapper<Msg> msg;
        msg.type = 1;
        msg.data = data;
        return msgsnd(msgQId, (void*) &msg, sizeof(data), 0);
    }
    template<typename Msg>
    static ssize_t receiveMsg(int msgQId, Msg& data)
    {
        MsgWrapper<Msg> msg;
        ssize_t recvSize = msgrcv(msgQId, (void*) &msg, sizeof(data), 0, 0);
        data = msg.data;
        return recvSize;
    }
};

#endif /* MESSAGEHANDLING_H_ */
